package com.cskaoyan.javase.array._1basic._1initialization;

/**
 * @description: 数组的初始化
 * @author: wuguidong@cskaoyan.onaliyun.com
 **/

/**
 * 类比于一个基本数据类型变量的初始化,数组的初始化是在做什么呢?
 * 数组的初始化实际上是在完成两个事情:
 *      1,指出数组的长度,能够开辟内存空间存放元素
 *      2,指出数组元素的取值,没有元素,数组也没有意义
 * 只有完成上述两个事情,才能够初始化一个数组
 *
 * 数组初始化的两种方式:
 *      1,静态初始化
 *      语法:
 *      数据类型[] 数组名 = _1new 数据类型[]{元素1,元素2....};
 *
 *      静态初始化的方式是可以简写的
 *      简写成
 *      数据类型[] 数组名  = {元素1,元素2...};
 *
 *      注意:静态初始化的简写方式是不可以和数组名一起使用的,必须和数组声明一起使用
 *
 *      2,动态初始化
 *      语法:
 *       数据类型[] 数组名  = _1new 数据类型[数组长度];
 *      动态初始化只给出数组的长度,但是没有指出数组元素的取值,那么这个初始化过程中的元素取值是怎么得出来的?
 *      因为数组中的元素具有默认值
 *
 * 思考: 我们一直在说开辟内存空间,给数组存放元素,开辟的是什么内存空间?
 *      指的是开辟JVM的内存空间,接下来我们要看JVM内存模型图
 *
 *
 */
public class Demo {
    public static void main(String[] args) {
        //静态声明初始化一个int数组
        int[] arr = new int[]{}; //这里创建了一个长度为0的数组
        int[] arr2 = new int[]{1, 2, 3}; //这里数组长度为3,元素分别是1,2,3

        //静态初始化的简写形式
        String[] arr3 = {"666", "777", "888"};

        //arr3 = {"1","2","3"}; 错误的方式

        //动态初始化char数组
        char[] arr4 = new char[5];

    }
}
